<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // splice()
    // splice(0)  splice(0,1)   splice(0,1,8,9)
    // let arr = [1,2,3,4,5]
    // splice传一个参数的时候  splice(删除的开始位置)
    // console.log(arr.splice(2)); //splice返回值是被删除掉的元素
    // console.log(arr);//[1,2] 

    // splice传2个参数的时候   //第一个参数是截取的开始位置  第二个参数是截取的个数
//    console.log( arr.splice(0,1));   //splice返回值是被删除掉的元素
//     console.log(arr);//[2,3,4,5]

 // splice传多个参数的时候   splice(替换的开始位置，替换的个数，替换的元素，)

// console.log( arr.splice(1,3,'b','c','b'));//splice返回值是被删除掉的元素
//  console.log(arr);

// splice 可以做添加？ 第二个参数写0就可以  因为第二个参数表示被你删除的个数  0表示删除掉的个数为0
// arr.splice(1,0,8,8,8,8,8)
// console.log(arr);


let list = [{name:'zs',age:18,status:false},{name:'ls',age:19,status:false},{name:'ww',age:20,status:false},{name:'zl',age:21,status:false}]

// let newList = list.forEach(item=>item.status=true)
// console.log(list);//forEach允许我们的回调函数来更改元素数组的元素
// console.log(newList);//forEach没有返回值  undefined

// map
// let newArr = list.map(item=>item.age)
// console.log(newArr);//map用于构建一个新的数组，map()会分配内存空间存储我们新数组，并且返回



let arr1 = [0,2,4,6,8,10]
console.time('forEach')
arr1.forEach((item,index,arr)=>{
    console.log(arr);//forEach能改变原始数组 ，
    arr1[index]= item/2

})
console.log(arr1);
console.timeEnd('forEach')


// console.time('map')
// let newArr = arr1.map((item,index,arr)=>{
//     console.log(arr);//  没有更改原数数组
//     return item/2
// })
// console.log(newArr);
// console.timeEnd('map')
// map的循环效率要比forEach高


// 总结：
// 相同点：都可以循环遍历数组 ，回调函数都有三个回调参数 item(数组的每一项),index（每一项对应的下标）， arr（原数组）
// 不同点：forEach没有返回值  map有返回值（map用于构建一个新的数组，map()会分配内存空间存储我们新数组，并且返回）
        //forEach允许我们的回调函数来更改元素数组的元素,,forEach能改变原始数组,没有更改原数数组
        // map的循环效率要比forEach高





        // push()  unshift() pop() shift()  slice()   concat() reserve() sort() includes() 返回值是一个布尔值  indexOf 
        let arr2 = [1,2,3,4,5]
        // console.log(arr2.push(8));//push，unshift 一个尾部添加，头部添加 ，他们的返回值新数组的长度
        // console.log(arr2.pop());//pop,shift,一个尾部删除，一个头部删除，他们的返回值是被删除的元素
        // console.log(arr2.includes(5));//includes判断数组中有没有该元素  有返回true 没有返回false
        console.log(arr2.indexOf(1));//他的返回值是 如果有返回第一次找到的下标，如果没有返回-1


        // forEach  map  filter  some  every find  reduce 
        // forEach没有返回值
        // map返回新数组
        // filter 返回值是新数组 （把过滤出来的满足条件的项，放到新数组里面）
        // some()(只有一个满足条件就返回true) every() (所有都满足条件才返回true)  返回值是布尔值 
        // find() 返回值是第一次满足添加的项 

        
         







    
</script>
</html>